package com.zhangzeqin.code.view;

import com.zhangzeqin.code.controller.AdminController;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

public class UserTableView extends JFrame {

    SpringLayout springLayout=new SpringLayout();
    JPanel centerPanel=new JPanel(springLayout);
    public static void main(String[] args) {
        new UserTableView();
    }

    /**
     * 实例化一个控制层对象
     */
    AdminController adminController=new AdminController();
    /**
     * 表头
     */
    String[] columnNames= {"id","账号","密码","昵称","性别","出生日期","电话号码"
            ,"打卡天数","累计时长","已学单词数","目标单词数" };
    /**
     * 表格所有行数据
     */
    Object[][] rowData= adminController.listUser();

    /**
     * 表格模型
     */
    private DefaultTableModel model;
    /**
     *"修改"按钮
     */

    private JButton modifyButton=new JButton("返回");


    public UserTableView() {
        super("用户表");


        //获取内容面板
        Container contentPane=getContentPane();

        //创建一个表格,指定表头和所有行数据
        JTable table = new JTable(rowData, columnNames);
        //表格修饰
        tableSetting(table);
        //设置模型
        model=new DefaultTableModel(rowData,columnNames);
        //引用模型
        table=new JTable(model);

        //设置滚动面板
        table.setPreferredScrollableViewportSize(new Dimension(400,300));
        //tablemodel:和jtable关联后,更新model就能把数据的变化反应到jtable
        DefaultTableModel tableModel=new DefaultTableModel();
        tableModel.setDataVector(rowData,columnNames);
        //jtable与table关联
        JTable jTable=new JTable(tableModel);
        //把表格放到滚动面板中(表头指定添加到滚动面板顶部)
        JScrollPane scrollPane=new JScrollPane(table);
        //添加滚动面板到内容面板
        contentPane.add(scrollPane);

        //调用按钮
        buttonInit();

        //监听器
        MyListener();

        //自定义图标
        URL imgUrl = LoginView.class.getClassLoader().getResource("image.png");
        setIconImage(new ImageIcon(imgUrl).getImage());

        //窗口大小
        setSize(900, 400);
        //关闭退出程序
        setLocationRelativeTo(null);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        setResizable(false);
        //可视
        setVisible(true);
    }

    private void tableSetting(JTable table) {
        // 设置表格内容颜色
        // 字体颜色
        table.setForeground(Color.BLACK);
        // 字体样式
        table.setFont(new Font(null, Font.PLAIN, 14));
        // 选中后字体颜色
        table.setSelectionForeground(Color.DARK_GRAY);
        // 选中后字体背景
        table.setSelectionBackground(Color.LIGHT_GRAY);
        // 网格颜色
        table.setGridColor(Color.GRAY);

        //设置表头
        //表头名称字体样式
        table.getTableHeader().setFont(new Font(null,Font.BOLD,14));
        //表头名称字体颜色
        table.getTableHeader().setForeground(Color.RED);
        //设置不允许手动改变列宽
        table.getTableHeader().setReorderingAllowed(false);
        //设置不允许拖动重新排序各列
        table.getTableHeader().setReorderingAllowed(false);

        //设置行高
        table.setRowHeight(30);

        //第一列列宽
        table.getColumnModel().getColumn(0).setPreferredWidth(10);
    }
    private void buttonInit() {
        //默认流布局
        final JPanel centerpanel=new JPanel();
        getContentPane().add(centerpanel,BorderLayout.SOUTH);

        //增加按钮
        centerpanel.add(modifyButton);
    }

    private void MyListener() {
        //"返回"监听器
        modifyButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new AdminView();
            }
        });

    }

    public String[] getColumnNames() {
        return columnNames;
    }

    public void setColumnNames(String[] columnNames) {
        this.columnNames = columnNames;
    }

    public Object[][] getRowData() {
        return rowData;
    }

    public void setRowData(Object[][] rowData) {
        this.rowData = rowData;
    }
}
